package com.open.base.dispatch;


import com.open.base.model.GeneralConfig;
import com.open.base.model.dto.UserConfigDto;
import com.open.base.model.vo.SysConfigVo;
import com.open.common.model.Page;

import java.util.List;

/**
 * 通用配置
 *
 * @author 大树03
 * @date 2025-03-31 21:00
 */
public interface IGeneralConfigDispatch {
	/**
	 * 添加对象
	 * @param model
	 * @return boolean
	 * @date 2025-03-31 21:00
	 */
	Boolean save(GeneralConfig model) ;

	/**
	 * 修改对象
	 * @param model
	 * @return boolean
	 * @date 2025-03-31 21:00
	 */
	Boolean update(GeneralConfig model) ;

	/**
	 * 根据条件查询
	 *
	 * @return
	 */
	List<GeneralConfig> findByModel(GeneralConfig model) ;

	/**
	 * 根据主键查询 
	 * @param pk 主键
	 * @return UserConfig
	 * @date 2025-03-31 21:00
	 */
	GeneralConfig findByPk(Long pk) ;

	/**
	 * 分页查询
	 *
	 * @param page
	 * @param model
	 * @return
	 */
	Page<SysConfigVo> findPage(Page<GeneralConfig> page, GeneralConfig model) ;

	/**
	 * 根据主键删除 
	 * @param pks 主键
	 * @return boolean
	 * @date 2025-03-31 21:00
	 */
	Boolean remove(List<Long> pks) ;

	/**
	 * 获取配置信息
	 * @param model
	 * @return
	 */
	Object getUserConfig(UserConfigDto model);

	/**
	 * 设置配置信息
	 * @param config
	 * @return
	 */
	Boolean setUserConfig(UserConfigDto config);

	String getSystemConfig(String type);

	List<String> getSystemConfigs(List<String> types);

	/**
	 * 批量修改对象
	 * @param models
	 * @return boolean
	 * @date 2025-09-08 19:43
	 */
	Boolean batchUpdate(List<GeneralConfig> models);
}